Library JAR就是我們最一般的JAR,存粹開發出來讓其他套件使用,它不會包含其它依賴的JAR在其中,既然是要給其它人使用,那麼他就需要部署到Remote Repository,在公司裡一般我們就會部署到Nexus Server讓其他團隊可以使用,今天我們就來談談這個部分。
download nexus server
install as serviceH:\Java\nexus-3.84.1-01-win-x86_64\nexus-3.84.1-01\bin\install-nexus-service.bat
access web browserlocalhost:8081
change default password
choose enable anonymous
default repository as follow
1. Proxy Repository(Remote的代理倉庫)
作為遠端倉庫的本地快取代理,例如maven repository或是alibaba repository,maven-central,在setting/Repositorys/maven-central可以設定remote repository
2. Hosted Repository(託管倉庫)
作為公司內部發佈套件存放的地方,例如maven-release、maven-snapshots
3. Group Repository(群組倉庫)
透過Group的設定可以將多個repository group起來作為統一入口,例如maven-public
enter ur local maven/conf/setting.xml in mirrors to set as follow
<mirrors>
<!-- 預設禁用http 這邊要設為false-->
<mirror>
<id>maven-default-http-blocker</id>
<mirrorOf>external:http:*</mirrorOf>
<name>Pseudo repository to mirror external repositories initially using HTTP.</name>
<url>http://0.0.0.0/</url>
<blocked>false</blocked>
</mirror>
<mirror>
<id>my_nexus_server</id>
<name>private nexus Repository</name>
<url>http://localhost:8081/repository/maven-public/</url>
<mirrorOf>central</mirrorOf>
</mirror>
</mirrors>
<servers>
<server>
<id>my_nexus_server</id>
<username>admin</username>
<password>yourpassword</password>
</server>
</servers>
我們來創建一個utils專案來上傳到內部nexus server
mvn archetype:generate -DarchetypeGroupId=org.apache.maven.archetypes -DarchetypeArtifactId=maven-archetype-quickstart -DarchetypeVersion=1.5
發現套件已從自建的nexus server下載
add Class
public class MyUtils {
public String getMyUtilsHello() {
return "Hello World!";
}
}
pom.xml設定
<build>
<distributionManagement>
<repository>
<id>my_nexus_server</id>
<name>private nexus Repository</name>
<url>http://localhost:8081/repository/maven-releases/</url>
</repository>
<snapshotRepository>
<id>my_nexus_server</id>
<name>private nexus Repository</name>
<url>http://localhost:8081/repository/maven-snapshots/</url>
</snapshotRepository>
</distributionManagement>
</build>
透過deploy
指令將JAR部署到nexus server,他會根據你的版本號是SNAPSHOT或是RELEASE部署到對應的repository
mvn deploy
在nexus server上就可以看到部署的JAR
create new maven project and try download dependency from local nexus server
我們來創建一個utils專案來上傳到內部nexus server
mvn archetype:generate -DarchetypeGroupId=org.apache.maven.archetypes -DarchetypeArtifactId=maven-archetype-quickstart -DarchetypeVersion=1.5
pom.xml設定
<dependency>
<groupId>com.mycompany.myutils</groupId>
<artifactId>myutils</artifactId>
<version>1.0-SNAPSHOT</version>
</dependency>
java code
public class App {
public static void main(String[] args) {
System.out.println(new MyUtils().getMyUtilsHello());
}
}
執行打包
mvn clean package
我們來看一下maven repository上面的其中一個套件的naming,來了解套件命名的規範
你會看到 12.X.XX
,甚至後面有帶 alpha
或 beta
的字眼,這遵循語義化版本規範:
基本格式:
<主要版本 major>.<次版本 minor>.<修補版本 patch>[-<預發布版本>]
Major(主要版本):當有不相容的 API 變更時遞增
1.0.0
→ 2.0.0
Minor(次版本):當有向下相容的新功能時遞增
1.1.0
→ 1.2.0
Patch(修補版本):當有向下相容的問題修復時遞增
1.1.1
→ 1.1.2
Pre-release(預發布版本):可選的標識符
alpha
:內部測試版本beta
:公開測試版本rc
or cr
(Release Candidate):發布候選版本SNAPSHOT
:正在開發版本,可能隨時有變動RELEASE
:最終正式版本,套件不會再更動m、milestone
:此版本達成了一個重要的開發里程碑,包含大量新功能。本日介紹從如何安裝nexus server,到Library JAR部署至nexus以及演示我們部署的Library JAR讓其它專案引用,並簡單說明套件版本naming的規則。